<?php  

/** 
* Assets page (Controller) 
* Страница активов (контроллер) 
* @author IT studio IRBIS-team 
* @copyright © 2009 IRBIS-team 
*/
/////////////////////////////////////////////////////////

/**
* Generation of page of an error at access out of system
* Генерация страницы ошибки при доступе вне системы
*/
    if(!defined('IRB_KEY'))
    {
       header("HTTP/1.1 404 Not Found");      
       exit(file_get_contents('../../404.html'));
    } 
//////////////////////////////////////////////////////////

/**
* We connect a file of the MySQL functions
* Подключаем файл функций MySQL
*/  
	include './libs/mysql.php'; 
    
	$POST = htmlChars($POST);
	$GET['id'] = !empty($GET['id'])?htmlChars($GET['id']):'';
	
	if(!empty($GET['id']))
	{
		$a = getAsset($GET['id']);
		$a_t = getAssetTags($GET['id']);
		$cur_user_id = (int)$_SESSION['user_data']['id'];
		$cur_asset_id = $GET['id'];
		$available_domains = getDomsOfUser($cur_user_id,10);
		$domains_of_this_asset = getDomsOfAsset($cur_asset_id);
	}
	
	if($ok)
		{

/**
* Обновляем привязку к доменам
*/		
			$arr_dota = array();
			
			if(!empty($domains_of_this_asset))
				{
				foreach($domains_of_this_asset as $d_key => $d)
				$arr_dota[] = $d['d_id'];
				}
				
			if(!empty($POST['array1']))
				{
				$arr_dota_del = array_diff($arr_dota,$POST['array1']);
				$arr_dota_add = array_diff($POST['array1'],$arr_dota);
				}
			
			if(!empty($arr_dota_del))
			{
				foreach($arr_dota_del as $del_key => $del_d_id)
					{
						mysqlQuery("DELETE FROM `". IRB_DBPREFIX ."asset_link_dom_user`
									WHERE 
										`user_id` = '".$cur_user_id."'
									AND
										`asset_id` = '".$cur_asset_id."'
									AND
										`dom_id` = '".$del_d_id."'");
					}
			}
			
			if(!empty($arr_dota_add))
			{
				foreach($arr_dota_add as $add_key => $add_d_id)
					{
						mysqlQuery("INSERT INTO `". IRB_DBPREFIX ."asset_link_dom_user`
									SET `user_id` = '".$cur_user_id."',
										`asset_id` = '".$cur_asset_id."',
										`dom_id` = '".$add_d_id."'");
					}
			}		

// Если домены обновились - обновляем их массив.			
			if(!empty($arr_dota_del) || !empty($arr_dota_add))
				$domains_of_this_asset = getDomsOfAsset($cur_asset_id);
				
// Если название есть и поменялось, то пишем в базу		
			if (!empty($POST['value2']) AND $a['caption'] != $POST['value2'])
				{
				$caption = "caption='".$POST['value2']."'";
				$a['caption'] = $POST['value2'];
				}
			else
				$caption='';

// Если описание есть и поменялось, то пишем в базу					
			if (!empty($POST['value3']) AND $a['description'] != $POST['value3'])
				{
				$description = "description='".$POST['value3']."'";
				$a['description'] = $POST['value3'];
				}
			else
				$description='';

// Если строка тегов есть, то пишем в базу								
			if (!empty($POST['value4']))
				{
					$arr_used_tags = array();
					
					if(!empty($a_t))
						{
						foreach($a_t as $t_key => $t)
							$arr_used_tags[] = $t['t_caption'];
						}
					
					$arr_tags = line_to_tags_array($POST['value4']);
					
					$arr_del_tags = array_diff($arr_used_tags,$arr_tags);
					$arr_add_tags = array_diff($arr_tags,$arr_used_tags);
					
					echo "<!--";
					echo "<p>arr_tags</p>";
					print_r($arr_tags);
					echo "<p>arr_used_tags</p>";
					print_r($arr_used_tags);
					echo "<p>arr_del_tags</p>";
					print_r($arr_del_tags);
					echo "<p>arr_add_tags</p>";
					print_r($arr_add_tags);
					echo "-->";
					
					if(!empty($arr_add_tags))
					{
						foreach($arr_add_tags as $aat_key => $aat)
						{
							$query = mysqlQuery("SELECT at.id 
										FROM `". IRB_DBPREFIX ."assets_tags` at
										WHERE at.caption = '".$aat."'");
										
// Если такого тега нет, то добавляем его, запоминаем id
							if(mysql_num_rows($query) == 0)
							{
								mysqlQuery("INSERT INTO `". IRB_DBPREFIX ."assets_tags`
											SET caption = '".$aat."'");
								mysqlQuery("INSERT INTO `". IRB_DBPREFIX ."asset_link_tag`
											SET asset_id = '".$cur_asset_id."',
												tag_id = LAST_INSERT_ID()");
							}
// Если такой тег есть, берем id, вставляем в таблицу связей.
							else
							{
								$tag_id_arr = mysql_fetch_assoc($query);
								$tag_id = $tag_id_arr['id'];
								mysqlQuery("INSERT INTO `". IRB_DBPREFIX ."asset_link_tag`
											SET asset_id = '".$cur_asset_id."',
												tag_id = '".$tag_id."'");
							}
							
						}
// Обновляем список тегов						
						$a_t = getAssetTags($GET['id']);
					}
					
					if(!empty($arr_del_tags))
					{
						foreach($arr_del_tags as $adt_key => $adt)
						{
							$query = mysqlQuery("SELECT at.id 
										FROM `". IRB_DBPREFIX ."assets_tags` at
										WHERE at.caption = '".$adt."'");

							if(mysql_num_rows($query) > 0)
							{
								$tag_id_arr = mysql_fetch_assoc($query);
								$tag_id = $tag_id_arr['id'];
								
								$c_query = mysqlQuery("SELECT alt.asset_id 
											FROM `". IRB_DBPREFIX ."asset_link_tag` alt
											WHERE alt.tag_id = '".$tag_id."'");
								
//Если привязка к этому тегу единственная или меньше, то удаляем связь и тег
								if(mysql_num_rows($c_query) <= 1)
								{
									mysqlQuery("DELETE FROM `". IRB_DBPREFIX ."asset_link_tag`
												WHERE tag_id = '".$tag_id."'");
									mysqlQuery("DELETE FROM `". IRB_DBPREFIX ."assets_tags`
												WHERE id = '".$tag_id."'");
								}
// Если привязка не одна, то удаляем только связь
								else
								{
									mysqlQuery("DELETE FROM `". IRB_DBPREFIX ."asset_link_tag`
												WHERE tag_id = '".$tag_id."'
												AND asset_id = '".$cur_asset_id."'");
								}
							}
						}
// Обновляем строку тегов.						
						$a_t = getAssetTags($GET['id']);
					}
				}
// Если пусто в строке тегов - чистим актив от связей с любыми тегами.				
			else
				{
				mysqlQuery("DELETE FROM `". IRB_DBPREFIX ."asset_link_tag` WHERE `asset_id`='".$cur_asset_id."'");
				if(mysql_affected_rows() > 0)
					$info[] = "Все связи актива с тегами были удалены.";
// Обновляем строку тегов.						
						$a_t = getAssetTags($GET['id']);
				}
// Если не пусты наименование и описание - обновляем запись актива в таблице.
			if($caption != '' OR $description != '')
				{
				mysqlQuery("UPDATE `". IRB_DBPREFIX ."assets`
					SET					 
					". $caption . $description ."
					WHERE `id` = ". $a['id'] );
			
				if(mysql_affected_rows() > 0)
					$info[] = "Актив успешно обновлен.";
				}
		
		}
	

	